package com.example.service;

import com.example.pojo.ThreeList;
import com.example.pojo.assTestLogPojo;
import com.example.pojo.controlPlanPojo;
import com.example.pojo.controlTestingPojo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * ClassName:controlPTestingService
 * Description:
 *
 */
public interface controlTestingService {
    //给控制计划管理页面查询“频次检测”的信息
    List<controlTestingPojo> controlTestingListByclickId(controlTestingPojo controlTesting);
    //查询“频次检测”页面的树形导航结构
    List<ThreeList> controlPlanTreeList();
    //点击树形结构，把对应该序的数据均筛选出来
    List<controlTestingPojo> controlTestingList(controlTestingPojo controlTestingPojo);

    //新的数据库下使用
    //点击导航，进行查询的函数,根据工序号进行查询
    List<controlTestingPojo> inquiryControlTestingByOp(Map<String, Object> parameters);
    //保存用户输入的检测数据
    void testingValInsert(List<controlTestingPojo> controlTestingPojoList);
    //筛选出趋势分析中用户选择的数据
    List<controlTestingPojo> selectNum(controlTestingPojo controlTestingPojo);
    //在更正数据页面中，修改数据，接收的是修改数字信息
    void testingEditNmb(Map<String, Object> parameters);
    //在更正数据页面中，修改数据，接收的是修改文本信息
    void testingEditStr(Map<String, Object> parameters);
    //给控制计划管理页面查询“频次检测”的信息，只筛选控制计划标记位的内容
    List<controlTestingPojo> controlByclickId(controlTestingPojo controlTesting);
    //根据ID修改数据
    void putById(controlTestingPojo controlTestingPojo);
    //接收到前端的向下插入或者向上插入指令，开始向数据库中插入，接收到的是一个List
    void controlTestingInsertC(List<controlTestingPojo> controlTestingPojoList);

    //根据ID，修改检测基准表中的一个字段
    void editOneFiledByControlTestingNew(Map<String, Object> parameters);
    //上传照片的接口
    String addPicture(MultipartFile file, Integer id, String fieldName, String fieldVal, String fileName);
    //下载图片、视频
    byte[] readFile(String fileName);
    //删除图片、视频
    String PictureRemove(Map<String, Object> parameters);
    //根据传来的字段(机型号），查询共计有多少条
    int queryNumControlTexting(String filed);
    //向检测数据库中的数据进行查询，是输入一个字段名，以及值，符合这一原则的数量是多少
    int queryNumTextingResult(Map<String, Object> map);
    //依据两个字段，向后端查询装配检测日志的信息
    assTestLogPojo assTestLogInquiryByTowFiled(Map<String, Object> map);
    //向装配检测日志的数据库中查询，根据一个字段（数据不唯一）
    List<assTestLogPojo> assTestLogInquiryByOneFiled(Map<String, Object> map);
    //辅助函数：（检测标准）根据一个字段，查询出符合这个字段所有的数据
    List<controlTestingPojo> controlTestingInquiryOneFiled(Map<String, Object> map);
    //辅助函数：（检测结果）根据三个字段，询符合等于这三个字段的数据
    List<controlTestingPojo> controlTestingDataInquiryThreeFiled(Map<String, Object> map);
    //辅助函数，(检测日志）向装配检测日志的数据库中一次插入多个数据
    void assTestLogInsertAll(List<assTestLogPojo> assTestLogPojoList);
    //辅助函数：（检测日志）根据一个字段，按照另一个字段从大到小排序，查询出第一条（主要用在了查询最后计算日期的场景上）
    assTestLogPojo assTestLogEndDateCount(Map<String, Object> map);
    //辅助函数：（检测数据）根据一个字段，查询这个字段下A值到B值的数据，主要用在查询两个日期之间的值，或者大于A，小于等于B的值；
    List<controlTestingPojo> queryOneFieldByAtoB(Map<String, Object> map);
    //辅助函数：（检测数据）根据一个字段A等于某一值，B字段从大到小排序，筛选n行；
    List<controlTestingPojo> testingQueryFieldAndBNum(Map<String, Object> map);
    //(检测日志)根据用户点击的刷新按钮，更新最新的计算日期：type是类型，例如：EB05PPK，或者其他的类型数据，doe:是检测类型中的第二位，例如，EB05PPK，M，就是代表要查询月度EB05PPK的值，也就是模糊查询EB05PPK-M，排序是dateUse列创建时间倒序排序；
    assTestLogPojo assTestLogRefreshPPKDate(Map<String, Object> map);
    //辅助函数：（检测数据）根据一个字段，查询等于这个字段的所有数据
    List<controlTestingPojo> testingQueryOneFiled(Map<String, Object> map);
}
